package com.sym.demo.duotai;

/**
 * 向上转型，向上转型是对A的对象的方法的扩充，
 * 即A的对象可访问B从A中继承来的和B“重写”A的方法。
 *
 * 其实在继承链中对象方法的调用存在一个优先级：
 *  this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。
 *
 * @Author: su_yongming
 * @Date: 2021/3/16 15:15
 */
public class DuotaiMain {
    public static void main(String[] args) {
        A a1 = new A();
        B b = new B();
        C c = new C();
        D d = new D();

        System.out.println("1--" + a1.show(b));// A and A
        System.out.println("2--" + a1.show(c));// A and A
        System.out.println("3--" + a1.show(d));// A and D

        A a2 = new B();
        System.out.println("4--" + a2.show(b));// B and B
        System.out.println("5--" + a2.show(c));// B and B
        System.out.println("6--" + a2.show(d));// B and B
        System.out.println("7--" + b.show(b));// B and B
        System.out.println("8--" + b.show(c));// B and B
        System.out.println("9--" + b.show(d));// B and B
    }
}
